約 5,664,096 件
https://w.atwiki.jp/formallang/pages/15.html
"Developmental Systems without Cellular Interactions, Their Languages and Grammars" (1971) L-Systemの中でも特に0L-Systemを考察した論文。0L-System とは、L-System の 0-sided 版。"without Interaction" とあるように、0-sided なので、周りの細胞の影響によらずに成長規則が決まっているような成長が扱われる。 Aristid Lindenmayer Journal of Theoretical Biology, vol. 30, pp. 455-484 http //dx.doi.org/10.1016/0022-5193(71)90002-6 "On 0L-Languages" (1971) 0L-Systemの形式言語理論的な特徴について考察した論文。あんまりよいClosure Propertyをもたないこと、正規言語や文脈自由言語とincomparableなこと、など。この後、Rozenbergによって、さまざまなClosure Propertyを持たせるにはどう拡張すればよいかという方向で、T0L-Systemを経由して最終的にET0L-Systemまで考察が進んでいる。 Grzegorz Rozenberg and P.G. Doucet Information and Control, vol. 19, pp. 302-318 http //dx.doi.org/10.1016/S0019-9958(71)90164-1
https://w.atwiki.jp/0x0b/pages/37.html
ECMAscript 3版 オブジェクト Global Object Function Array String Boolean Number Math Date RegExp Error(Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError) プロパティ を保持するコンテナ 他のオブジェクト プリミティブ値 メソッド プリミティブ値を持つ組み込み 型 Undefined, Null, Boolean, Number, String 組み込み演算子セットの定義 単項演算(unary operations) 乗除演算子(multiplicative operators) 加減演算子(additive operators) ビットシフト演算子(bitwise shift operators) 関係演算子(relational operators) 等価演算子(equality operators) ビット演算子(binary bitwise operators) 論理演算子(binary logical operators) 代入演算子(assignment operators) カンマ演算子(comma operator) オブジェクトを生成するコンストラクタ コンストラクタではないオブジェクトもある prototypeプロパティにより プロトタイプベースの継承および共有プロパティの実装に使用 プロトタイプチェーン (prototype chain) クラスベースのオブジェクト指向の言語 一般に、状態(state) がインスタンスによって運ばれ、メソッドはクラスによって運ばれ、継承は構造(strucutuer) と振る舞い(behaviour) にのみ存在 ECMAScriptでは、状態およびメソッドがオブジェクトによって運ばれ、構造、振る舞い、状態がすべて継承される new String("text") オブジェクト生成にはnew式を使用 String("text") プリミティブな文字列を生成 定義 (Definitions) [訳注 この仕様では "instance" という語が散見するが、 ECMAScript はプロトタイプベース言語であり、この語はクラスベース言語における "instance" のような技術的意味を持たない。現に仕様内にこの語に関する定義は公式非公式含めて見つからず、日常語としての「実例、実体、具体的なもの」としての意味合いで用いられているとも考えられる。] 型 (Type) データ値の集合 プリミティブ値 (Primitive Value) Undefined, Null, Boolean, Number, String 型のうちの一つの構成要素 プリミティブ値は言語実装の最低レベルにおいて直接表されるデータ オブジェクト (Object) Object 型の構成要素 序列のないプロパティの集合体 それぞれのプロパティがプリミティブ値やオブジェクト、関数を含む オブジェクトのプロパティに格納された関数はメソッドと呼ばれる コンストラクタ (Constructor) オブジェクトを生成し初期化する Function オブジェクトのこと 各コンストラクタは関連する prototype オブジェクトを持ち、継承と共有プロパティの実装に用いられる プロトタイプ (Prototype) オブジェクトであり、ECMAScript 中では、構造(structure), 状態(state), 振る舞い(behaviour) の継承に用いられる。コンストラクタがオブジェクトを生成するとき、プロパティの参照を解決する目的で、そのオブジェクトは暗黙にコンストラクタに関連するプロトタイプを参照する。コンストラクタに関連するプロトタイプはプログラム式 constructor.prototype で参照され、オブジェクトのプロトタイプに追加されたプロパティは、継承を通して、そのプロトタイプを共有する全オブジェクトによって共有される ネイティブオブジェクト (Native Object) ECMAScript 実装によって提供される任意のオブジェクトで、ホスト環境に依存しない。標準 Native オブジェクトは本仕様中で定義される。Native オブジェクトの一部は Built-in(組み込み) である。他のものは ECMAScript プログラムの実行行程の間に構築されるだろう 組み込みオブジェクト (Built-in Object) ECMAScript 実装によって提供される任意のオブジェクトであり、ECMAScript プログラムの実行の開始時に存在するホスト環境に依存しない。標準 Built-in オブジェクトは本仕様中に定義され、ECMAScript 実装は他を定義してもよい。全 Built-in オブジェクトは Native オブジェクトである。 ホストオブジェクト (Host Object) Host オブジェクトは ECMAScript の実行環境を満たすためにホスト環境によって提供される任意のオブジェクトである。Native でない任意のオブジェクトは Host オブジェクトである。 undefined 値 (Undefined Value) プリミティブ値 変数に値が代入されていないときに用いられる Undefined 型 (Undefined Type) 厳密には undefined と呼ばれるひとつの値を取る null 値 (Null Value) プリミティブな値であり、ヌル、空(empty)、存在しない参照を表す Null 型 (Null Type) 厳密には null と呼ばれるひとつの値を取る 真偽値 (Boolean Value) Boolean 型の元 (member 集合を構成するもの) 一意的な二つの値、 true と false の一方である。 Boolean 型 (Boolean Type) 論理的実体を表し、厳密には二つの一意的な値で構成される。一方は true と呼ばれ、他方は false と呼ばれる。 4.3.15 Boolean オブジェクト (Boolean Object) Boolean オブジェクトは Object 型の元で、組込み Boolean オブジェクトのインスタンスである。つまり、 Boolean オブジェクトは、 new 式内で引数にブーリアンを渡した Boolean コンストラクタを用いて作成される。結果のオブジェクトはブーリアンである暗黙の(無名の)プロパティを持つ。 Boolean オブジェクトはブーリアン値に強制される。 文字列値 (String Value) String 型の元で、0 以上の 16 ビット符号なし整数値による有限の順序あるシーケンスである。 NOTE 各値は通常単一の UTF-16 テキストの 16 ビット単位をあらわすが、言語はそれらが 16 ビット符号なし整数であること以外の制限また要求を値上に設置しない。 String 型 (String Type) String 型はすべての文字列値の集合である。 String オブジェクト (String Object) Object 型の元で、組込み String オブジェクトのインスタンスである。つまり、String オブジェクトは new 式内で引数として文字列を供給する String コンストラクタを用いて生成される。結果のオブジェクトは文字列である暗黙の(無名の)プロパティを持つ。 String コンストラクタの関数としての呼び出しにより、 String オブジェクトは文字列値に強制される。 数値 (Number Value) Number 型の元で、数を直接表現する。 Number 型 (Number Type) 数を表す値の集合である。 ECMAScript において、値の集合は、特殊な "Not-a-Number" (NaN) 値、正の無限大、負の無限大を含めた倍精度64ビット形式 IEEE 754 値である。 4.3.21 Number オブジェクト (Number Object) Number オブジェクトは Object 型の元で、組込み Number オブジェクトのインスタンスである。つまり、 Number オブジェクトは new 式において Number コンストラクタに引数として数を渡して生成される。結果のオブジェクトは数字である暗黙の (無名の) プロパティを持つ。 Number オブジェクトは関数としての Number コンストラクタ呼び出し (セクション 15.7.1) によって数値に矯正できる。 Infinity プリミティブ値 正の無限大をあらわす。この値は Number 型の元である。 NaN プリミティブ値 IEEE 標準 "Not-a-Number" 値のセットあらわす この値は Number 型の元である 記述法 構文と字句の文法 (Syntactic and Lexical Grammars) 文脈自由文法 (Context-Free Grammars) 生成規則 (production)によって構成 各生成規則はその左辺に非終端記号 (nonterminal symbol) と呼ばれる抽象的記号を 右辺に 0 個以上の非終端記号と終端記号 (terminal symbol) の並びを持つ 各文法のために、終端記号は特定のアルファベットか引き出される 目標記号 (goal symbol) と呼ばれる、単一の識別される非終端記号で構成される文から始まり、与えられる文脈自由文法は言語を規定 終端記号の可能なシーケンスの (おそらく無限の) 集合で、それはシーケンス内で非終端記号を、非終端記号が左辺である生成規則の右辺で繰り返し置換することから生じる 字句と正規表現の文法 (The Lexical and RegExp Grammars) 文法は終端記号として Unicode 文字セットの文字を持つ 目標記号 InputElementDiv や InputElementRegExp から始まる生成規則のセットを定義 Unicode文字のシーケンスが入力要素のシーケンス内でどのような処理がなされるか説明する 空白類及びコメント以外の入力要素は、 ECMAScript トークン (ECMAScript tokens) と呼ばれECMAScript の構文的文法に終端記号を形成する これらのトークンは ECMAScript 言語の予約語、識別子、リテラルおよび接続子である 行終端子 (line terminator) はトークンだと考えられてはいないが、入力要素のストリームの一部になり、自動セミコロン挿入 (字句) のプロセスをガイドする 単純な空白類および一行のコメントは、廃棄されて構文的な文法用の入力要素のストリームに出現しない MultiLineComment (1 行を超えるか範囲かどうか関係ない "/*…*/" 形式のコメント) が行終端子を含まない場合、同様に単に廃棄される MultiLineComment が 1 つ以上の行終端子を含んでいる場合、それは 1 つの行終端子と置換され、それは構文的な文法用の入力要素のストリームの一部になる ECMAScript のための RegExp 文法はセクション 15.10 に与えられる。この文法は、さらにその終端記号として Unicode 文字セットの文字を持つ。それは 1 セットの生成規則を定義し、目標記号パターンから開始して、 Unicode 文字のシーケンスが正規表現パターンにどのように翻訳されるか説明する。 字句と RegExp 文法の生成規則は、区切り分離として 2 つのコロン " " を持つことで識別される。字句と RegExp 文法はいくつかの生成規則を共有する。 この文法は、さらにその終端記号として Unicode 文字セットの文字を持つ 1 セットの生成規則を定義し、目標記号パターンから開始して、 Unicode 文字のシーケンスが正規表現パターンにどのように翻訳されるか説明する 字句と RegExp 文法の生成規則は、区切り分離として 2 つのコロン " " を持つことで識別される。字句と RegExp 文法はいくつかの生成規則を共有する 数値文字の文法 (The Numeric String Grammar) 第二の文法は文字列をを数値の値に変換するのに使用される 文法は数値リテラルと関係する字句の文法の一部に似ていて、その終端記号として Unicode 文字集合の文字を持つ。 この文法は(型変換)に出現する 数値的文字文法の生成規則は、接続子として 3 つのコロン " " を用いて区別される 構文的文法 (The Syntactic Grammar) ECMAScript のための構文的文法は(式, 文, 関数定義, プログラム)で扱う 文法は ECMAScript トークンを持ち、字句文法によってその終端記号として定義 生成規則の一集合を定義し、目標記号 Program(生成規則 Program )から開始し、トークンのシーケンスがどのように構文上正しい ECMAScript プログラムを形成できるか説明する Unicode 文字のストリームが ECMAScript プログラムとして解析されることになっている場合、それは字句文法の繰り返された適用によって、最初に入力要素のストリームに変換される; この入力要素のストリームはその後、構文文法の単一のアプリケーションによって解析される 残ったトークンのない、ゴール非終端記号Program の単一の実例として入力要素のストリームのトークンを解析できない場合、プログラムは構文上誤っている 構文的文法の生成規則は、接続子として 1 つのコロン " " を用いて区別される (式, 文, 関数定義, プログラム)の中で示される構文的文法は、トークンシーケンスが正しい ECMAScript プログラムとして認められる、現実に完全な説明ではない 疑う余地のない追加トークンシーケンス、すなわち、文法によって記述され、セミコロンだけが (行終端子文字の前のような) 確実な場所内のシーケンスに加えられた場合も受理される 終端子文字が確実に "不適当な" 場所に現われる場合、文法によって記述されるあるトークンシーケンスは、受理可能であるとは考えられない 文法記法 (Grammar Notation) 字句と文字列の文法の終端記号といくつかの構文文法の終端記号は、文法の生成規則内及びこの仕様を通して、テキストがそのような終端記号を直接参照するときは 等幅フォントであらわされる。これらはプログラム中に書かれるものとして出現する。この方法で指定される非終端記号の文字は全て、 ASCII の範囲から 適当な Unicode 文字として理解されるものであり、他の Unicode 範囲の類似した文字ではない。 非終端記号は イタリック体 であらわされる。非終端記号の定義は、一つ以上のコロンの続く定義されている非終端記号の名前によって案内される。(コロンの数は生成規則がどの文法に属するかを示す。) 非終端記号の一つ以上の代替の右辺は後続行に続く。 [訳注 この HTML 版邦訳でのフォントはこの限りではないかもしれない。] 例えば、次の構文定義 WithStatement with ( Expression ) Statement は、非終端記号 WithStatement がトークン with 、左括弧トークン、 Expression 、右括弧トークン、 Statement の続きをあらわすことを明言する。 Expression 及び Statement の出現はそれ自身非終端である。別な例として、次の構文定義 ArgumentList AssignmentExpression ArgumentList , AssignmentExpression は、 ArgumentList が単一の AssignmentExpression 、または ArgumentList 、カンマ、 AssignmentExpression の続きのどちらかをあらわすかもしれないことを明言する。この ArgumentList の定義は再帰的で、つまり、自分自身の表現の中で定義される。結果として、 ArgumentList はカンマで区切られた任意の正数の引数で構成されうる。その各引数式のところは AssignmentExpression である。非終端記号のそのような再帰的定義が一般的である。 下付き文字による後置句 "opt" は、終端記号または非終端記号の後に出現でき、選択的記号を示す。代替構成の選択的記号は実際は 2 つの右辺を規定する。1 つは選択的要素を省いたもの、1 つは含めたものである。これはつまり VariableDeclaration Identifier Initialiseropt は次の略記であるということだ VariableDeclaration Identifier Identifier Initialiser そして IterationStatement for ( ExpressionNoInopt ; Expressionopt ; Expressionopt ) Statement は次の略記であり IterationStatement for ( ; Expressionopt ; Expressionopt ) Statement for ( ExpressionNoIn ; Expressionopt ; Expressionopt ) Statement 順に次の略記ということになり IterationStatement for ( ; ; Expressionopt ) Statement for ( ; Expression ; Expressionopt ) Statement for ( ExpressionNoIn ; ; Expressionopt ) Statement for ( ExpressionNoIn ; Expression ; Expressionopt ) Statement 順に次の略記ということになる IterationStatement for ( ; ; ) Statement for ( ; ; Expression ) Statement for ( ; Expression ; ) Statement for ( ; Expression ; Expression ) Statement for ( ExpressionNoIn ; ; ) Statement for ( ExpressionNoIn ; ; Expression ) Statement for ( ExpressionNoIn ; Expression ; ) Statement for ( ExpressionNoIn ; Expression ; Expression ) Statement 従って非終端記号 IterationStatement は、実際には 8 個の代替右辺を持つ。 フレーズ "[empty]" が生成規則の右辺に出現するならば、それは生成規則の右辺が終端記号も非終端記号も含まないことを示す。 フレーズ "[lookahead ∉ set]" が生成規則の右辺に出現する場合は、直後の入力終端記号が与えられた set の元ならば、生成規則が使われないことを示す。 set は { } 内に囲まれた終端記号のリストとして書くことが出来る。簡潔に言えば、 set は非終端記号として書くことも出来る。その場合、非終端記号から展開可能な終端記号の全てをあらわす。例えば、定義 DecimalDigit one of 0 1 2 3 4 5 6 7 8 9 DecimalDigits DecimalDigit DecimalDigits DecimalDigit を与えられて、定義 LookaheadExample n [lookahead ∉ {1, 3, 5, 7, 9} ] DecimalDigits DecimalDigit [lookahead ∉ DecimalDigit ] は、偶数で始まる一つ以上の数字が続く文字 n 、あるいは他の数字が続かない数字にマッチする。 フレーズ "[no LineTerminator here]" 構文的文法の生成規則の右辺に出現する場合、生成規則が 制限生成規則 (restricted production) であることを示す 入力ストリームの示された位置に LineTerminator が出現しなければ使用できない。例えば、次の生成規則 ReturnStatement return [LineTerminator 無し] Expressionopt ; プログラム内の return トークンと Expression の間に LineTerminator が出現する場合はこの生成規則は使用できない。 LineTerminator の存在が制限生成規則に隠されなければ、入力要素のストリーム内の 2 つの連続するトークン間に LineTerminator はいくつでも出現でき、プログラムの構文的受容性に影響を与えない。 文法定義内のコロンに語句 "one of" が続く場合、後続行の終端記号のそれぞれが代替定義であることを意味する。例えば、ECMAScript の字句文法は次の生成規則を含む NonZeroDigit one of 1 2 3 4 5 6 7 8 9 これは単に次の略記である NonZeroDigit one of 1 2 3 4 5 6 7 8 9 字句文法また数値文字文法の生成規則内の代替が複数文字トークンである場合、そのトークンを作る文字シーケンスをあらわす。 生成規則の右辺は、フレーズ "but not" を用いてある展開が許可されないことを規定してよく、その展開は除外される。例えば、次の生成規則 Identifier IdentifierName but not ReservedWord は、非終端記号 Identifier が IdentifierName に置換可能だが ReservedWord で置換不可能な文字シーケンスであることを意味する。 最後に、全ての代替をすべてあげるのが現実的でないいくつかの非終端記号が、ローマン体の説明的フレーズで記述される SourceCharacter any Unicode character 5.2 アルゴリズム記述について (Algorithm Conventions) 仕様はしばしば番号を振ったリストを用いて、アルゴリズム内のステップを規定する。これらのアルゴリズムは意味論を明確にするために用いられる。実際には、与えられる機能の実装に有効な、より能率的なアルゴリズムであってよい。 アルゴリズムが結果として値を生成するとき "x を返す" が用いられ、アルゴリズムの結果が x の値であり、アルゴリズムが終了すべきであることを示す。表記 Result(n) は "ステップ n の結果" の略記である。Type(x) は "x の型" の略記である。 本セクションで後に述べる加法、減法、否定、乗法、除法、数学的関数のような数学的操作は、常に、無限及び正の 0 から区別される負の 0 を含まない数学的な実数上の厳密な数学的結果を演算するものとして理解されるべきである。浮動小数点数計算を作るこの標準のアルゴリズムは、必要に応じて、無限と符号付きの 0 を操作し丸めの実行する、明示的なステップを含む。数学的操作または関数が浮動小数点数に適用される場合、その浮動小数点数\であらわされる厳密な数学的値に適用されるものとして理解されるべきである; そのような浮動小数点数は有限であるべきで、そして +0 または -0 ならば該当する数学的値は単に 0 である。 数学関数 abs(x) は x の絶対値をもたらし、 x が負(0 未満) なら -x 、そうでなければ x 自身である。 数学関数 sign(x) は、 x が正ならば 1、 x が負ならば -1 をもたらす。 x が 0 のときのための sign 関数はこの標準では用いられない。 記法 "x modulo y" (y は 0 以外の有限数) は、ある整数 q について abs(k) abs(y) かつ x - k = q * y であるような、 y (又は 0) と同じ符号の値 k を算出する。 数学関数 floor(x) は x より大きくない最大の整数 (正の無限に接近する) をもたらす。 NOTE floor(x) = x - (x modulo 1). アルゴリズムが "例外を投げる" と定義されていれば、アルゴリズムの実行は終了し、結果を何も返さない。アルゴリズム呼出しも終了し、 "例外が投げられたら…" のような用語を用いて、アルゴリズムのステップが明示的に例外を扱うに至る。一度そのようなアルゴリズムのステップに遭遇したらそれ以上例外の発生は考慮されない。 ソーステキスト 文法記法 (Grammar Notation) 字句と文字列の文法の終端記号といくつかの構文文法の終端記号は、文法の生成規則内及びこの仕様を通して、テキストがそのような終端記号を直接参照するときは 等幅フォントであらわされる。これらはプログラム中に書かれるものとして出現する。この方法で指定される非終端記号の文字は全て、 ASCII の範囲から 適当な Unicode 文字として理解されるものであり、他の Unicode 範囲の類似した文字ではない。 非終端記号は イタリック体 であらわされる。非終端記号の定義は、一つ以上のコロンの続く定義されている非終端記号の名前によって案内される。(コロンの数は生成規則がどの文法に属するかを示す。) 非終端記号の一つ以上の代替の右辺は後続行に続く。 [訳注 この HTML 版邦訳でのフォントはこの限りではないかもしれない。] 例えば、次の構文定義 WithStatement with ( Expression ) Statement は、非終端記号 WithStatement がトークン with 、左括弧トークン、 Expression 、右括弧トークン、 Statement の続きをあらわすことを明言する。 Expression 及び Statement の出現はそれ自身非終端である。別な例として、次の構文定義 ArgumentList AssignmentExpression ArgumentList , AssignmentExpression は、 ArgumentList が単一の AssignmentExpression 、または ArgumentList 、カンマ、 AssignmentExpression の続きのどちらかをあらわすかもしれないことを明言する。この ArgumentList の定義は再帰的で、つまり、自分自身の表現の中で定義される。結果として、 ArgumentList はカンマで区切られた任意の正数の引数で構成されうる。その各引数式のところは AssignmentExpression である。非終端記号のそのような再帰的定義が一般的である。 下付き文字による後置句 "opt" は、終端記号または非終端記号の後に出現でき、選択的記号を示す。代替構成の選択的記号は実際は 2 つの右辺を規定する。1 つは選択的要素を省いたもの、1 つは含めたものである。これはつまり VariableDeclaration Identifier Initialiseropt は次の略記であるということだ VariableDeclaration Identifier Identifier Initialiser そして IterationStatement for ( ExpressionNoInopt ; Expressionopt ; Expressionopt ) Statement は次の略記であり IterationStatement for ( ; Expressionopt ; Expressionopt ) Statement for ( ExpressionNoIn ; Expressionopt ; Expressionopt ) Statement 順に次の略記ということになり IterationStatement for ( ; ; Expressionopt ) Statement for ( ; Expression ; Expressionopt ) Statement for ( ExpressionNoIn ; ; Expressionopt ) Statement for ( ExpressionNoIn ; Expression ; Expressionopt ) Statement 順に次の略記ということになる IterationStatement for ( ; ; ) Statement for ( ; ; Expression ) Statement for ( ; Expression ; ) Statement for ( ; Expression ; Expression ) Statement for ( ExpressionNoIn ; ; ) Statement for ( ExpressionNoIn ; ; Expression ) Statement for ( ExpressionNoIn ; Expression ; ) Statement for ( ExpressionNoIn ; Expression ; Expression ) Statement 従って非終端記号 IterationStatement は、実際には 8 個の代替右辺を持つ。 フレーズ "[empty]" が生成規則の右辺に出現するならば、それは生成規則の右辺が終端記号も非終端記号も含まないことを示す。 フレーズ "[lookahead ∉ set]" が生成規則の右辺に出現する場合は、直後の入力終端記号が与えられた set の元ならば、生成規則が使われないことを示す。 set は { } 内に囲まれた終端記号のリストとして書くことが出来る。簡潔に言えば、 set は非終端記号として書くことも出来る。その場合、非終端記号から展開可能な終端記号の全てをあらわす。例えば、定義 DecimalDigit one of 0 1 2 3 4 5 6 7 8 9 DecimalDigits DecimalDigit DecimalDigits DecimalDigit を与えられて、定義 LookaheadExample n [lookahead ∉ {1, 3, 5, 7, 9} ] DecimalDigits DecimalDigit [lookahead ∉ DecimalDigit ] は、偶数で始まる一つ以上の数字が続く文字 n 、あるいは他の数字が続かない数字にマッチする。 フレーズ "[no LineTerminator here]" 構文的文法の生成規則の右辺に出現する場合、生成規則が 制限生成規則 (restricted production) であることを示す 入力ストリームの示された位置に LineTerminator が出現しなければ使用できない。例えば、次の生成規則 ReturnStatement return [LineTerminator 無し] Expressionopt ; プログラム内の return トークンと Expression の間に LineTerminator が出現する場合はこの生成規則は使用できない。 LineTerminator の存在が制限生成規則に隠されなければ、入力要素のストリーム内の 2 つの連続するトークン間に LineTerminator はいくつでも出現でき、プログラムの構文的受容性に影響を与えない。 文法定義内のコロンに語句 "one of" が続く場合、後続行の終端記号のそれぞれが代替定義であることを意味する。例えば、ECMAScript の字句文法は次の生成規則を含む NonZeroDigit one of 1 2 3 4 5 6 7 8 9 これは単に次の略記である NonZeroDigit one of 1 2 3 4 5 6 7 8 9 字句文法また数値文字文法の生成規則内の代替が複数文字トークンである場合、そのトークンを作る文字シーケンスをあらわす。 生成規則の右辺は、フレーズ "but not" を用いてある展開が許可されないことを規定してよく、その展開は除外される。例えば、次の生成規則 Identifier IdentifierName but not ReservedWord は、非終端記号 Identifier が IdentifierName に置換可能だが ReservedWord で置換不可能な文字シーケンスであることを意味する。 最後に、全ての代替をすべてあげるのが現実的でないいくつかの非終端記号が、ローマン体の説明的フレーズで記述される SourceCharacter any Unicode character 5.2 アルゴリズム記述について (Algorithm Conventions) 仕様はしばしば番号を振ったリストを用いて、アルゴリズム内のステップを規定する。これらのアルゴリズムは意味論を明確にするために用いられる。実際には、与えられる機能の実装に有効な、より能率的なアルゴリズムであってよい。 アルゴリズムが結果として値を生成するとき "x を返す" が用いられ、アルゴリズムの結果が x の値であり、アルゴリズムが終了すべきであることを示す。表記 Result(n) は "ステップ n の結果" の略記である。Type(x) は "x の型" の略記である。 本セクションで後に述べる加法、減法、否定、乗法、除法、数学的関数のような数学的操作は、常に、無限及び正の 0 から区別される負の 0 を含まない数学的な実数上の厳密な数学的結果を演算するものとして理解されるべきである。浮動小数点数計算を作るこの標準のアルゴリズムは、必要に応じて、無限と符号付きの 0 を操作し丸めの実行する、明示的なステップを含む。数学的操作または関数が浮動小数点数に適用される場合、その浮動小数点数\であらわされる厳密な数学的値に適用されるものとして理解されるべきである; そのような浮動小数点数は有限であるべきで、そして +0 または -0 ならば該当する数学的値は単に 0 である。 数学関数 abs(x) は x の絶対値をもたらし、 x が負(0 未満) なら -x 、そうでなければ x 自身である。 数学関数 sign(x) は、 x が正ならば 1、 x が負ならば -1 をもたらす。 x が 0 のときのための sign 関数はこの標準では用いられない。 記法 "x modulo y" (y は 0 以外の有限数) は、ある整数 q について abs(k) abs(y) かつ x - k = q * y であるような、 y (又は 0) と同じ符号の値 k を算出する。 数学関数 floor(x) は x より大きくない最大の整数 (正の無限に接近する) をもたらす。 NOTE floor(x) = x - (x modulo 1). アルゴリズムが "例外を投げる" と定義されていれば、アルゴリズムの実行は終了し、結果を何も返さない。アルゴリズム呼出しも終了し、 "例外が投げられたら…" のような用語を用いて、アルゴリズムのステップが明示的に例外を扱うに至る。一度そのようなアルゴリズムのステップに遭遇したらそれ以上例外の発生は考慮されない 字句 型 型変換 実行コンテキスト 式 文 関数定義 プログラム 重要項目なので別に移すかもしれない ネイティブECMAオブジェクト オブジェクト(Global, Object, Function, Array, String, Boolean, Number, Math, Date, RegExp, Error) 項目、総量が多いので別枠に記載 文法要約 互換性
https://w.atwiki.jp/ntemacs/pages/48.html
■ Windows版 Emacs 共通の設定 (一部の設定を除き、Linux版 Emacs にも適用可能) 【お知らせ】 2021/12/16 追記 相互リンク。こちらも参考になると思います。 https //ploversky.net/archives/463 2020/04/23 追記 ワンショットモディファイアの機能を利用し、左右の Alt キーに IME の切替えを割り当てられるようにしました。Keyhac の設定と連携することで動作します。US のキーボードを利用している場合にお試しください。 なお、次の設定も同じ操作性にできるように見直しました。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 2020/04/13 追記 「IME を無効にするキー設定」と「IME を有効にするキー設定」を追加しました。初期設定では、「無変換」キーと「変換」キーを割り当てています。C-o の設定はトグル動作となっていますが、設定の中のコメントを見直すことで変更可能です。お勧めは、C-o のトグル設定は残して C-j に英数への切替えを設定するものです。日本語への切替えが C-o によるトグル操作による切替えの他、C-j C-o での一発切替えが可能となります。(helm 利用の際に C-j がバッティングしますが、C-o で逃げれます。) なお、次の設定も同じ操作性にできるように見直しました。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 2019/05/17 追記 wdired 利用時に C-o による日本語入力を可能とする設定を追加しました。 2018/08/12 追記 mozc-im-mode 変数をバッファローカル変数にする方法を make-variable-buffer-local 関数を使う方法から defvar-local で定義する方法に見直しました。Emacs-24.3 以降で有効な設定となります。 https //qiita.com/tadsan/items/9d287a57c26711387043 2018/01/04 追記 mozc-candidate-dispatch の advice が helm の仕様変更により動作しなくなっていましたので見直しました。この対応で、dired 利用時に + キーで動作する dired-create-directory でも日本語が正常に入力できるようになりました。 2017/05/04 追記 本設定は Windows Subsystem for Linux でも利用可能です。設定は次のページから始めてください。 emacs-mozc を動かすための設定(WSL 設定編) 2016/12/01 追記 次のページで報告されている問題について対策しました。 https //github.com/d5884/mozc-im/pull/1 2016/09/13 追記 5) で mozc_emacs_helper.exe に対し IME を ON にするために発行しているキーを「Hiragana」から「Hankaku/Zenkaku」に変更しました。この対応で、Google日本語入力のキー設定が「MS-IME」以外の「ことえり」などでも emacs-mozc を使えるようになりました。(ただし、「Hankaku/Zenkaku」キーは「Hiragana」キーと異なり、IME の ON/OFF をトグルするキーとなります。必要な場合に一度のみ発行するように注意して利用する必要があります。(本設定を利用すれば問題は発生しません。)) 2015/12/07 追記 本設定とは直接関係ありませんが、isearch でキルリングを張り付けるには、C-s RET C-y とすればいいのですね。知りませんでした..。 http //kouritool.com/itdiary/emacs%E3%81%A7%E5%BC%B5%E3%82%8A%E4%BB%98%E3%81%91%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%A4%9C%E7%B4%A2/ 【本題】 【重要】 WSL版 Emacs の利用者は、最初に「emacs-mozc を動かすための設定(WSL 設定編)」を参照してください。 【重要】 Windows版 Emacs の利用者は、事前に「emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編)」を参照してください。 【重要】 「emacs-mozc を動かすための設定(サーバ準備編)」を行う方法もありますが、特に理由がなければ mozc_emacs_helper.exe を利用する方法をお勧めします。 【重要】 Linux で mozc(Google日本語入力ではなく)を利用する場合は、次の対応を行った後、(共通)の設定を進んで下さい。 $ sudo apt install emacs-mozc-bin $ sudo apt install mozc-utils-gui NTEmacs で emacs-mozc を動かすための Emacs 設定編です。 以下は設定手順です。 1) (共通)melpa package から、mozc、mozc-im、mozc-popup をインストールする。 ※ mozc-candidate-style を overlay に設定した場合、動作が遅く使用に耐えません。これを改善するのが mozc-popup です。tabbar との相性も良いとの情報もあります。 ※ mozc-im を使うことで、isearch の中でも mozc による日本語入力が可能となります。 2) (共通)次のページから mozc-cursor-color.el をダウンロードし、~/.emacs.d/site-lisp 等の load 対象となるディレクトリ配下にサブディレクトリを作成し格納する。 https //github.com/iRi-E/mozc-el-extensions 3) (「サーバ準備編」利用の場合)サーバ準備編で git により作成された vagrant-emacs-mozc ディレクトリ以下に mozc-emacs-helper.sh というファイルがあるので、このファイルを ~/bin 等の PATH の通ったフォルダにコピーする。既存の Linux環境を利用する場合は、mozc-emacs-helper.sh の中身を確認し、Linuxマシンに自動ログインできるスクリプトに書き換える。置き換えるスクリプトは以下のようなもの。 ssh user @localhost -p port mozc_emacs_helper "$@" また、MinGW版 Emacs を利用している場合は、「fakecygpty を使うための設定」を利用し、fakecygpty-program-list に "mozc-emacs-helper.sh" を追加する。 4) (共通)init.el 等に以下の elisp の設定を追加する。 (require mozc-im) (require mozc-popup) (require mozc-cursor-color) (require wdired) (setq default-input-method "japanese-mozc-im") ;; popupスタイル を使用する (setq mozc-candidate-style popup) ;; カーソルカラーを設定する (setq mozc-cursor-color-alist ((direct . "red") (read-only . "yellow") (hiragana . "green") (full-katakana . "goldenrod") (half-ascii . "dark orchid") (full-ascii . "orchid") (half-katakana . "dark goldenrod"))) ;; カーソルの点滅を OFF にする (blink-cursor-mode 0) (defun enable-input-method ( optional arg interactive) (interactive "P\np") (if (not current-input-method) (toggle-input-method arg interactive))) (defun disable-input-method ( optional arg interactive) (interactive "P\np") (if current-input-method (toggle-input-method arg interactive))) (defun isearch-enable-input-method () (interactive) (if (not current-input-method) (isearch-toggle-input-method) (cl-letf (((symbol-function toggle-input-method) (symbol-function ignore))) (isearch-toggle-input-method)))) (defun isearch-disable-input-method () (interactive) (if current-input-method (isearch-toggle-input-method) (cl-letf (((symbol-function toggle-input-method) (symbol-function ignore))) (isearch-toggle-input-method)))) ;; IME をトグルするキー設定 (global-set-key (kbd "C-o") toggle-input-method) (define-key isearch-mode-map (kbd "C-o") isearch-toggle-input-method) (define-key wdired-mode-map (kbd "C-o") toggle-input-method) ;; IME を無効にするキー設定 (global-set-key (kbd "C- f1 ") disable-input-method) (define-key isearch-mode-map (kbd "C- f1 ") isearch-disable-input-method) (define-key wdired-mode-map (kbd "C- f1 ") disable-input-method) ;; (global-set-key (kbd "C-j") disable-input-method) ;; (define-key isearch-mode-map (kbd "C-j") isearch-disable-input-method) ;; (define-key wdired-mode-map (kbd "C-j") disable-input-method) ;; IME を有効にするキー設定 (global-set-key (kbd "C- f2 ") enable-input-method) (define-key isearch-mode-map (kbd "C- f2 ") isearch-enable-input-method) (define-key wdired-mode-map (kbd "C- f2 ") enable-input-method) ;; (global-set-key (kbd "C-o") enable-input-method) ;; (define-key isearch-mode-map (kbd "C-o") isearch-enable-input-method) ;; (define-key wdired-mode-map (kbd "C-o") enable-input-method) ;; mozc-cursor-color を利用するための対策 (defvar-local mozc-im-mode nil) (add-hook mozc-im-activate-hook (lambda () (setq mozc-im-mode t))) (add-hook mozc-im-deactivate-hook (lambda () (setq mozc-im-mode nil))) (advice-add mozc-cursor-color-update around (lambda (orig-fun rest args) (let ((mozc-mode mozc-im-mode)) (apply orig-fun args)))) ;; isearch を利用する前後で IME の状態を維持するための対策 (add-hook isearch-mode-hook (lambda () (setq im-state mozc-im-mode))) (add-hook isearch-mode-end-hook (lambda () (unless (eq im-state mozc-im-mode) (if im-state (activate-input-method default-input-method) (deactivate-input-method))))) ;; wdired 終了時に IME を OFF にする (advice-add wdired-finish-edit after (lambda ( rest args) (deactivate-input-method))) gnupack 等で W32-IME の設定がされている場合は、以下の箇所をコメント化してください。 gnupack-11系: 「@ime」セクション gnupack-12,13系: 「@ language - input method」セクション、「@ screen - cursor」セクション、「@ search - isearch」セクションの後半 MinGW版 Emacs を使っている場合は、以下の設定を追加してください。 ;; IME が ON の時、カーソルの移動が遅くなるのを改善する (setq w32-pipe-read-delay 10) helm を使っている場合は、以下の設定を追加してください。 (require cl-lib) ;; helm でミニバッファの入力時に IME の状態を継承しない (setq helm-inherit-input-method nil) ;; helm の検索パターンを mozc を使って入力した場合にエラーが発生することがあるのを改善する (advice-add mozc-helper-process-recv-response around (lambda (orig-fun rest args) (cl-loop for return-value = (apply orig-fun args) if return-value return it))) ;; helm の検索パターンを mozc を使って入力する場合、入力中は helm の候補の更新を停止する (advice-add mozc-candidate-dispatch before (lambda ( rest args) (when helm-alive-p (cl-case (nth 0 args) ( update (unless helm-suspend-update-flag (helm-kill-async-processes) (setq helm-pattern "") (setq helm-suspend-update-flag t))) ( clean-up (when helm-suspend-update-flag (setq helm-suspend-update-flag nil))))))) ;; helm で候補のアクションを表示する際に IME を OFF にする (advice-add helm-select-action before (lambda ( rest args) (deactivate-input-method))) 5) (「mozc_emacs_helper コンパイル編」利用の場合)init.el 等に以下の elisp の設定を追加する。 ;; Windows の mozc では、セッション接続直後 directモード になるので hiraganaモード にする (advice-add mozc-session-execute-command after (lambda ( rest args) (when (eq (nth 0 args) CreateSession) ;; (mozc-session-sendkey (hiragana))))) (mozc-session-sendkey (Hankaku/Zenkaku))))) 6) (「サーバ準備編」利用の場合)init.el 等に以下の elisp の設定を追加する。 ;; https //github.com/igjit/vagrant-emacs-mozc (setq mozc-helper-program-name "mozc_emacs_helper.sh") (setq mozc-helper-process-timeout-sec 10) 7) (「mozc_emacs_helper コンパイル編」利用の場合)mozc のキーバインドを設定する。 「Google日本語入力」のプロパティで、「キー設定」を「ことえり」に選択してください。「ことえり」は Emacsキーバインドをベースとしたキー設定となっており、更に以下のキーが近いキー位置で利用可能となっています。 C-i (文節を縮める) C-o (文節を伸ばす) C-j (ひらがなに表示切替) C-k (全角カタカナに表示切替) C-l (全角英数に表示切替) C-; (半角に表示切替) C- /C- (半角英数に表示切替) ※ ターミナルソフトから Emacs を利用する場合、C-;、C- 、C- は利用できません。他のキーに置き換えてご利用ください。 8) (「サーバ準備編」利用の場合)mozc のキーバインドを設定する。 Linuxサーバ の mozc のキーバインドの設定は mozc_tool というコマンドで行いますが、Vargent で作成した Linuxサーバには mozc_tool はインストールされていません。このため、Windows PC に「Google日本語入力」をインストールして 7) の設定を行い、設定した結果が格納されている以下のファイルを Linux 側の ~/.mozc ディレクトリにコピーすることで対応してください。ファイルをコピーした後は Linuxサーバを再起動してください。 c /Users/ user /AppData/LocalLow/Google/Google Japanese Input/config1.db コマンド実行手順は以下のとおりとなります。 $ ssh -p 2422 -i ~/.vagrant.d/insecure_private_key vagrant@127.0.0.1 mkdir -p ~/.mozc $ cd c /Users/ user /AppData/LocalLow/Google/Google Japanese Input $ scp -P 2422 -i ~/.vagrant.d/insecure_private_key config1.db vagrant@127.0.0.1 ~/.mozc $ cd gitした場所 /vagrant-emacs-mozc $ vagrant reload なお、Linuxサーバに mozc-utils-guiパッケージ をインストールすれば、mozc_tool コマンドの表示を Cygwin/X 等の Xサーバに表示させることができます。コマンドは以下のとおりです。 $ sudo apt install mozc-utils-gui $ /usr/lib/mozc/mozc_tool --mode=config_dialog ただし、「emacs-mozc を動かすための設定(サーバ準備編)」でインストールした Linuxサーバ では、LANG の設定をしただけでは日本語の表示はできないようです。 9) (共通)Emacs で C-o を入力することにより、mozc-emacs-helper が起動し、漢字が入力できることを確認する。 ※ 「emacs-mozc を動かすための設定(WSL 設定編)」から本ページに来た場合は、まだ漢字入力はできません。このまま進んでください。 10) (共通)Windows の IME の切換えキーで mozc を切り替えられるように調整する。 ※ Virtualbox の Linux で Emacs を動作させている場合は、本設定で利用している Keyhac は有効に機能しません。本設定は、Windows版 Emacs や Windows の Xサーバソフトを経由して Emacs を動作させている場合に有効な設定です。 Windows の IME の切換えキー(「半角/全角」(日本語キーボード用)や Alt-`(英語キーボード用))で mozc を切り替えられるようにするには、「Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版)」の併用を検討ください。(Fakeymacs extension の real-emacs を有効にしてください。)IME の切換えの対応のみ行いたい場合には、以下の設定が利用できます。設定の方法はコメントの URL を参照してください。 これらの設定は、NTEmacs(gnupack 含む)と Windows の Xサーバで動く Emacs で機能するようにしています。Windows の Xサーバで Emacs が動作しているかどうかは、ウィンドウのタイトルで判定しています。Emacs の設定でタイトルの表示内容を変更している場合には、re.search 内の検索する正規表現を調整することで対応してください。 # -*- mode python; coding utf-8-with-signature-dos -*- # http //qiita.com/hshimo/items/2f3f7e070ae75243eb8b import re from keyhac import * def configure(keymap) def is_real_emacs(window) if (window.getClassName() == "Emacs" or (window.getProcessName() in ["mstsc.exe", # WSLg "msrdc.exe", # WSLg "XWin.exe", # Cygwin/X "XWin_MobaX.exe", # MobaXterm/X "XWin_MobaX_1.16.3.exe", # MobaXterm/X "XWin_Cygwin_1.14.5.exe", # MobaXterm/X "XWin_Cygwin_1.16.3.exe", # MobaXterm/X "Xming.exe", # Xming "vcxsrv.exe", # VcXsrv "GWSL_vcxsrv.exe", # GWSL "GWSL_vcxsrv_lowdpi.exe", # GWSL "X410.exe", # X410 "Xpra-Launcher.exe", # Xpra ] and # ウィンドウのタイトルを検索する正規表現を指定する # Emacs を起動しているウィンドウを検索できるように、Emacs の frame-title-format 変数を # 次のように設定するなどして、識別できるようにする # (setq frame-title-format (format "emacs-%s - %%b " emacs-version)) # (別途公開している sglstart コマンドを利用している場合、%%b の後のスペースは必要) re.search(r"^emacs-", window.getText()))) return True else return False keymap_real_emacs = keymap.defineWindowKeymap(check_func=is_real_emacs) # IME 切り替え用のキーの置き換え keymap_real_emacs["(243)"] = keymap.InputKeyCommand("C-Yen") # 半角/全角 キー keymap_real_emacs["(244)"] = keymap.InputKeyCommand("C-Yen") # 半角/全角 キー keymap_real_emacs["A-(25)"] = keymap.InputKeyCommand("C-Yen") # Alt-` キー keymap_real_emacs["(29)"] = keymap.InputKeyCommand("C-F1") # 無変換 キー keymap_real_emacs["(28)"] = keymap.InputKeyCommand("C-F2") # 変換 キー # keymap_real_emacs["O-LAlt"] = keymap.InputKeyCommand("C-F1") # 左 Alt キーの単押し # keymap_real_emacs["O-RAlt"] = keymap.InputKeyCommand("C-F2") # 右 Alt キーの単押し 変更履歴 2014/10/30 このページを作成した。 2014/11/02 minibuffer-setup-hook の設定を追加した。 2014/11/04 wdired を使う際の設定を追加した。 2014/11/18 「emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編)」に対応した。 2014/11/20 IME が ON の時、カーソルの移動が遅くなる対策を追加した。(w32-pipe-read-delay の値を デフォルトの 50 から 10 に変更した。) 2014/11/24 minibuffer-setup-hook 内の unless の判定を Emacs-24.3 以前のバージョンでも有効なものに変更した。 2014/11/27 helm の検索パターンを mozc を使って入力した場合にエラーが発生することがある対策を追加した。 2014/11/29 helm の検索パターンを mozc を使って入力する場合、入力中は helm の候補の更新を停止するようにした。 2014/12/12 helm で候補のアクションを表示する際に IME を OFF にするようにした。 2015/01/17 mozc-popup を最新と思われるサイトのものの利用に変更した。 2015/03/11 mozc-helper-process-recv-response のアドバイスの内容を簡略化した。 2015/07/22 Emacs-24.3 以上の対応の記載とした。 2015/09/10 advice を Emacs-24.4 以降の書式に見直した。 2015/10/30 mozc-im を利用するように設定を全面的に見直した。 2015/11/12 mozc-candidate-dispatch の advice を一度削除していたが、やはりあるべき設定のようなので復活させた。 2015/12/28 keyhac の設定の内容を、Keyhac for Windows ver 1.70 用に見直しをした。 2016/12/01 https //github.com/d5884/mozc-im/pull/1 で報告されている問題について対策した。 2017/07/11 Emacs で mozc を利用する際に Windows の IME の切換えキーを mozc の切り替えキーとして機能させるための設定を見直した。 2017/12/21 keyhac の設定で import re の行が不足していたので、追加した。 2019/05/17 wdired 利用時に C-o による日本語入力を可能とする設定を追加した。 2020/04/13 「IME を無効にするキー設定」と「IME を有効にするキー設定」を追加した。 2020/04/19 ワンショットモディファイアの機能を利用し、左右の Alt キーに IME の切替えを割り当てられるようにした。
https://w.atwiki.jp/code_matome/pages/42.html
Internet Engineering Task Force (IETF) J. Korhonen, Ed. Request for Comments 6603 Nokia Siemens Networks Updates 3633 T. Savolainen Category Standards Track Nokia ISSN 2070-1721 S. Krishnan Ericsson O. Troan Cisco Systems, Inc May 2012 Prefix Exclude Option for DHCPv6-based Prefix Delegation Abstract This specification defines an optional mechanism to allow exclusion of one specific prefix from a delegated prefix set when using DHCPv6-based prefix delegation. The new mechanism updates RFC 3633. この仕様では、DHCPv6-based prefix delegationを仕様するときに、委任prefixから特定のprefixを除外するオプションのメカニズムを定義する。 Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http //www.rfc-editor.org/info/rfc6603. Copyright Notice Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust s Legal Provisions Relating to IETF Documents (http //trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Korhonen, et al. Standards Track [Page 1] RFC 6603 PD Exclude Option May 2012 Table of Contents 1. Introduction ....................................................2 2. Requirements and Terminology ....................................2 3. Problem Background ..............................................3 問題の背景 4. Solution ........................................................3 4.1. Prefix Delegation with Excluded Prefixes ...................3 Excluded PrefixのPrefix Delegation 4.2. Prefix Exclude Option ......................................4 5. Delegating Router Solicitation ..................................6 5.1. Requesting Router ..........................................6 5.2. Delegating Router ..........................................6 6. Requesting Router Initiated Prefix Delegation ...................7 6.1. Requesting Router ..........................................7 6.2. Delegating Router ..........................................8 7. Security Considerations .........................................8 8. IANA Considerations .............................................8 9. Acknowledgements ................................................8 10. References .....................................................9 10.1. Normative References ......................................9 10.2. Informative References ....................................9 1. Introduction This specification defines an optional mechanism and the related DHCPv6 option to allow exclusion of one specific prefix from a delegated prefix set when using DHCPv6-based prefix delegation. この仕様は、DHCPv6-based prefix delegationを使用するときに委任prefixから特定のprefixを除外することを可能とするDHCPv6 optionとメカニズムを定義する。 The prefix exclusion mechanism is targeted at deployments where DHCPv6-based prefix delegation is used, but a single aggregated route/prefix has to represent one customer, instead of using one prefix for the link between the delegating router and the requesting router and another prefix for the customer network. The mechanism defined in this specification allows a delegating router to use a prefix out of the delegated prefix set on the link through which it exchanges DHCPv6 messages with the requesting router, and is intended for use in networks where each requesting router is on its own layer-2 domain. prefix exclusion mechanism(prefix除外メカニズム)はDHCPv6-based prefix delegationが使用される運用をターゲットとしている。ただし、委任ルーターと要求ルーターで1つのprefixが使用され、異なるprefixが加入者のネットワークで使用されるのではなく、1加入者が1つの委任prefix、routeに集約される。この仕様で定義されたメカニズムにより、要求ルーターがDHCPv6 message exchangeでexchangeし、linkに設定した委任prefixの中のprefixを委任ルーターは使用することができ、各要求ルーターがレイヤ2ドメインにある場合、ネットワークで使用することができる。 2. Requirements and Terminology The key words MUST , MUST NOT , REQUIRED , SHALL , SHALL NOT , SHOULD , SHOULD NOT , RECOMMENDED , MAY , and OPTIONAL in this document are to be interpreted as described in [RFC2119]. Korhonen, et al. Standards Track [Page 2] RFC 6603 PD Exclude Option May 2012 3. Problem Background DHCPv6 Prefix Delegation (DHCPv6-PD) [RFC3633] has an explicit limitation described in Section 12.1 of [RFC3633] that a prefix delegated to a requesting router cannot be used by the delegating router. This restriction implies that the delegating router will have two (non-aggregatable) routes towards a customer one for the link between the requesting router and the delegating router, and one for the customer site behind the requesting router. DHCPv6 Prefix Delegation(DHCPv6-PD)は要求ルーターに委任されたprefixを委任ルーターは使用することができない(RFC 12.1 Section 12.1の制限)。この制限は、委任ルーターが加入者に対して2つの集約できないルートを持っていることを意味する。1つは要求ルーターと委任ルーター、2つは委任ルーターと要求ルーターのは以下の顧客サイト。 There are architectures and link models where a host (e.g., a mobile router, also acting as a requesting router) always has a single (/64) prefix configured on its uplink interface and the delegating router is also the requesting router s first-hop router. Furthermore, it may be required that the prefix configured on the uplink interface has to be aggregatable with the delegated prefixes. This introduces a problem in how to use DHCPv6-PD together with stateless [RFC4862] or stateful [RFC3315] address autoconfiguration on a link where the /64 advertised is also part of the prefix delegated (e.g., /56) to the requesting router. このアーキテクチャーでは、ホストは常にuplinkインターフェースには1つの/64 prefixが設定され、委任ルーターは要求ルーターと1hop ルーターの関係である。さらに、uplinkインターフェースで設定されたprefixは委任prefixで集約可能であることが要求される。これは、DHCPv6-PDとstatelessまたはstateful address autoconfigurationを使用するとき、/64 のadvertiseが要求ルーターへの委任prefixの一部(例 /56)であるときに問題になる。 4. Solution 4.1. Prefix Delegation with Excluded Prefixes This specification defines a new DHCPv6 option, OPTION_PD_EXCLUDE (67), that is used to exclude exactly one prefix from a delegated prefix. The OPTION_PD_EXCLUDE is included in the OPTION_IAPREFIX IAprefix-options field. There can be at most one OPTION_PD_EXCLUDE option in one OPTION_IAPREFIX option. The OPTION_PD_EXCLUDE option allows prefix delegation where a requesting router is delegated a prefix (e.g., /56) and the delegating router uses one prefix (e.g., /64) on the link through which it exchanges DHCPv6 messages with the requesting router with a prefix out of the same delegated prefix set. この仕様では、新規のDHCPv6 option OPTION_PD_EXCLUDE (67)を定義する。これは、委任prefixから1つだけprefixを除外するために使用される。OPTION_PD_EXCLUDEはOPTION_IAPREFIX IAprefix-options fieldに含まれる。1つのOPTION_IAPREFIX optionに最大で1つのOPTION_PD_EXCLUDE optionがある。OPTION_PD_EXCLUDE optionは要求ルーターが委任されたprefix(例 /56)のprefix delegationを可能とし、委任ルーターは要求ルーターと同じ委任prefixの集合を交換したリンクで使用することを可能とする。 A requesting router includes an OPTION_ORO option with the OPTION_PD_EXCLUDE option code in a Solicit, Request, Renew, or Rebind message to inform the delegating router about the support for the prefix delegation functionality defined in this specification. A delegating router may include the OPTION_PD_EXCLUDE option code in an OPTION_ORO option in a Reconfigure message to indicate that the requesting router should request OPTION_PD_EXCLUDE from the delegating router. 要求ルーターはこの仕様で含まれるprefix delegation機能について委任ルーターに通知するためSolicit、Request、Renew、Rebind messageのOPTION_ORO optionにOPTION_PD_EXCLUDE option code を設定する。委任ルーターは、要求ルーターが委任ルーターからOPTION_PD_EXCLUDEを要求するべきであることを示すため、Reconfigure messageにOPTION_ORO optionにOPTION_PD_EXCLUDE option codeを設定する。 Korhonen, et al. Standards Track [Page 3] RFC 6603 PD Exclude Option May 2012 The delegating router includes the prefix in the OPTION_PD_EXCLUDE option that is excluded from the delegated prefix set. The requesting router MUST NOT assign the excluded prefix to any of its downstream interfaces. 委任ルーターは委任prefixの集合から除外されたprefixをOPTION_PD_EXCLUDE optionに設定する。要求ルーターは除外されたprefixを下位のインターフェースに割り当てないこと。 4.2. Prefix Exclude Option 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION_PD_EXCLUDE | option-len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | prefix-len | IPv6 subnet ID (1 to 16 octets) ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Prefix Exclude Option o option-code OPTION_PD_EXCLUDE (67). o option-len 1 + length of IPv6 subnet ID in octets. A valid option-len is between 2 and 17. 1 + IPv6 subnet IDのオクテットサイズ。有効なoption-lenは2から17の間である。 o prefix-len The length of the excluded prefix in bits. The prefix-len MUST be between OPTION_IAPREFIX prefix-length +1 and 128. bit単位のexcluded prefixの長さ。prefix-lenは「OPTION_IAPREFIX prefix-length + 1」と128の間であること。 o IPv6 subnet ID A variable-length IPv6 subnet ID up to 128 bits. 128bit以下の可変長IPv6 subnet ID。 The IPv6 subnet ID contains prefix-len minus OPTION_IAPREFIX prefix- length bits extracted from the excluded prefix starting from the bit position OPTION_IAPREFIX prefix-length . The extracted subnet ID MUST be left-shifted to start from a full octet boundary, i.e., left- shift of OPTION_IAPREFIX prefix-length mod 8 bits. The subnet ID MUST be zero-padded to the next full octet boundary. IPv6 subnet IDはOPTION_IAPREFIX prefix-lengthのbit位置から始まるexcluded prefixが取り除かれた、prefix-len - 「OPTION_IAPREFIX prefix-length」だけのbitを設定する。抽出されたsubnet IDはオクテット境界で左シフトすること。つまり、「OPTION_IAPREFIX prefix-length」 mod 8 bitsだけ左シフトすること。subnet IDはオクテット境界で0パディングすること。 The encoding of the IPv6 subnet ID can be expressed in a C-like pseudocode as shown below 以下のように、IPv6 subnet IDのエンコードはCライクのコードで示される。 uint128_t p1; // the delegated IPv6 prefix uint128_t p2; // the excluded IPv6 prefix uint16_t a; // the OPTION_IAPREFIX prefix-length uint8_t b; // the excluded IPv6 prefix length uint8_t s; // sanity checks s = 128-a; // size of non-prefix bits assert(b a); // b must be at least a+1 assert(p1 s == p2 s); // p1 and p2 must share a common // prefix of a bits // calculate the option content uint16_t c = b-a-1; // the IPv6_subnet_ID_length-1 in bits uint16_t d = (c/8)+1; // the IPv6_subnet_ID_length in octets uint128_t p = p2 // common p1 prefix left-shifted out to // a full octet boundary (trailing bits // are zeroed) // populate the option uint8_t* id = OPTION_PD_EXCLUDE.IPv6_subnet_ID; OPTION_PD_EXCLUDE.option_len = d+1; OPTION_PD_EXCLUDE.prefix_len = b; while (d-- 0) { *id++ = p 120; p = 8; } The OPTION_PD_EXCLUDE option MUST only be included in the OPTION_IAPREFIX IAprefix-options [RFC3633] field. OPTION_PD_EXCLUDE optionはOPTION_IAPREFIX IAprefix-option fieldにのみ設定されること。 Any prefix excluded from the delegated prefix MUST be contained in OPTION_PD_EXCLUDE options within the corresponding OPTION_IAPREFIX. 委任prefixから除外されたprefixは対応するOPTION_IAPREFIX内のOPTION_PD_EXCLUDE optionに含まれること。 The prefix included in the OPTION_PD_EXCLUDE option shares the same preferred-lifetime and valid-lifetime as the delegated prefix in the encapsulating OPTION_IAPREFIX option. OPTION_PD_EXCLUDE optionのprefixはカプセル化されたOPTION_IAPREFIX optionの委任prefixのpreferred lifetimeとvalid lifetimeを共有する。 The prefix in the OPTION_PD_EXCLUDE option MUST be part of the delegated prefix in the OPTION_IAPREFIX. For example, the requesting router has earlier been assigned a 2001 db8 dead beef /64 prefix by the delegating router, and the delegated prefix in the OPTION_IAPREFIX is 2001 db8 dead bee0 /59. In this case, 2001 db8 dead beef /64 is a valid prefix to be used in the OPTION_PD_EXCLUDE option. The OPTION_PD_EXCLUDE option would be encoded as follows OPTION_PD_EXCLUDE optionのprefixはOPTION_IAPREFIXの委任prefixの一部であること。例えば、要求ルーターが委任ルーターにprefix「2001 db8 dead beef /64」を割り当てられ、OPTION_IAPREFIXの委任prefixが 「2001 db8 dead bee0 /59」の場合、「2001 db8 dead beef /64」はOPTION_PD_EXCLUDE optionで使用できる有効なprefixである。 OPTION_PD_EXCLUDE optionは下記のようにエンコードされる。 (訳注) uint128_t p1「2001 db8 dead beef 」 // the delegated IPv6 prefix uint128_t p2「2001 db8 dead bee0 」 // the excluded IPv6 prefix uint16_t a「59」 // the OPTION_IAPREFIX prefix-length uint8_t b「64」 // the excluded IPv6 prefix length uint8_t s; uint16_t c = b-a-1; 「c=4」 // the IPv6_subnet_ID_length-1 in bits uint16_t d = (c/8)+1; 「d=1」 // the IPv6_subnet_ID_length in octets uint128_t p = p2 p2=0010 0000 0000 0001 0000 1101 1011 1000 1101 1110 1010 1101 1011 1110 1110 1111 0×64個 p = 0 1111 0×59個 // populate the option uint8_t* id = OPTION_PD_EXCLUDE.IPv6_subnet_ID; OPTION_PD_EXCLUDE.option_len = d+1; 「2」 OPTION_PD_EXCLUDE.prefix_len = b; 「64」 while (d-- 0) { *id++ = p 120; *(OPTION_PD_EXCLUDE.IPv6_subnet_ID+0)「0111 1000」 p = 8; } 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION_PD_EXCLUDE | 2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 64 |0|1|1|1|1|0|0|0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ^ ^ | | | +- 3 zero-padded bits follow | +- using C syntax 0xef (59 % 8) Note 59 mod 8 = 3 5. Delegating Router Solicitation The requesting router locates and selects a delegating router in the same way as described in Section 11 [RFC3633]. This specification only describes the additional steps required by the use of the OPTION_PD_EXCLUDE option. 要求ルーターがRFC3633 Section 11と同じ方法で委任ルーターを選択する。この仕様ではOPTION_PD_EXCLUDE optionを使用したときに追加される手順を説明する。 5.1. Requesting Router If the requesting router implements the solution described in Section 4.1, then the requesting router SHOULD include the OPTION_PD_EXCLUDE option code in the OPTION_ORO option in Solicit messages. 要求ルーターはSection 4.1で説明したソリューションを実装する場合、要求ルーターはSolicit messageにOPTION_ORO optionにOPTION_PD_EXCLUDE option codeを設定すること。 Once receiving Advertise message(s), the requesting router uses the prefix(es) received in OPTION_PD_EXCLUDE, in addition to the advertised prefixes, to choose the delegating router. The requesting router MUST proceed to the Prefix Delegation procedure described in Section 6.1. If the Advertise message did not include the OPTION_PD_EXCLUDE option, then the requesting router MUST fall back to normal behavior, as described in Section 11.1 of [RFC3633]. Advertise messageを受信したら、要求ルーターは委任ルーターを選択するためにadvertiseされたprefixに加え、OPTION_PD_EXCLUDEのprefixを使用する。要求ルーターはSection 6.1のPrefix Delegation procedureを実行すること。Advertise messageがOPTION_PD_EXCLUDE optionを含まなかった場合、要求ルーターはRFC 3633 Section 11.1の動作を実行すること。 5.2. Delegating Router If the OPTION_ORO option in the Solicit message includes the OPTION_PD_EXCLUDE option code, then the delegating router knows that the requesting router supports the solution defined in this specification. If the Solicit message also contains an IA_PD option, the delegating router can delegate to the requesting router a prefix that includes the prefix already assigned to the requesting router s uplink interface. The delegating router includes the prefix originally, or to be, assigned to the requesting router in the OPTION_PD_EXCLUDE option within the OPTION_IAPREFIX IAprefix-option in the Advertise message. Solicit messageのOPTION_OROがOPTION_PD_EXCLUDE option codeを含む場合、委任ルーターは要求ルーターがこの仕様で定義されたソリューションをサポートすることを知る。Solicit messageはIA_PD optionも含んでいる場合、委任ルーターは要求ルーターに要求ルーターがuplinkに割り当てられているprefixを含むprefixを委任できる。委任ルーターはAdvertise messageにOPTION_IAPREFIX IAprefix-option内のOPTION_PD_EXCLUDE optionで要求ルーターにprefixを割り当てる。 If the OPTION_ORO option in the Solicit message does not include the OPTION_PD_EXCLUDE option code, then the delegating router MUST fall back to normal behavior, as described in Section 11.2 of [RFC3633]. Solicit messageでOPTION_ORO optionがOPTION_PD_EXCLUDE option codeを含まない場合、委任ルーターはRFC 3633 Section 11.2の動作を実行すること。 If the OPTION_ORO option in the Solicit message includes the OPTION_PD_EXCLUDE option code but the delegating router does not support the solution described in this specification, then the delegating router acts as specified in [RFC3633]. Solicit messageでOPTION_ORO optionがOPTION_PD_EXCLUDE option codeを含むが、委任ルーターがこの仕様のソリューションをサポートしない場合、委任ルーターはRFC 3633の動作をする。 6. Requesting Router-Initiated Prefix Delegation The procedures described in the following sections are aligned with Section 12 of [RFC3633]. In this specification, we only describe the additional steps required by the use of the OPTION_PD_EXCLUDE option. このSectionではRFC 3633のSection 12の動作を整理する。この仕様では、OPTION_PD_EXCLUDE optionが追加された時に必要な追加手順のみを説明する。 6.1. Requesting Router The requesting router behavior regarding the use of the OPTION_PD_EXCLUDE option is mostly identical to the steps described in Section 5.1, with the difference being the use of a DHCPv6 Request instead of an Solicit message. The requesting router SHOULD include the OPTION_PD_EXCLUDE option code in the OPTION_ORO option for DHCPv6 messages as described in Section 22.7 of [RFC3315]. The requesting router SHOULD include the OPTION_PD_EXCLUDE option code in the OPTION_ORO option for DHCPv6 messages as described in Section 22.7 of [RFC3315]. OPTION_PD_EXCLUDE optionの使用に関する要求ルーターの動作はSolicit messageの代わりにRequest messageを使用していること以外はSection 5.1とほぼ同じである。RFC 3315のSection 22.7で説明されている通り、要求ルーターはDHCPv6 messageにOPTION_ORO optionでOPTION_PD_EXCLUDE option codeを含むこと。 The requesting router uses a Release message to return the delegated prefix(es) to a delegating router. The prefix(es) to be released MUST be included in the IA_PDs along with the excluded prefix included in the OPTION_PD_EXCLUDE option. The requesting router MUST NOT use the OPTION_PD_EXCLUDE option to introduce an additional excluded prefix in the Release message for which it originally got a valid binding. 要求ルーターは委任ルーターに委任されたprefixを返却するためにRelease messageを使用する。リリースされるprefixには、OPTION_PD_EXCLUDE optionのexcluded prefixもIA_PDに含まれること。要求ルーターはRelease messageにexcluded prefixを追加するためのOPTION_PD_EXCLUDE optionを使用しないこと。 The requesting router must create sink routes for the delegated prefixes, minus the excluded prefixes. This may be done by creating sink routes for delegated prefixes and more specific routes for the excluded prefixes. 要求ルーターはexcluded prefixを取り除いた委任prefixのルーティングを作成する必要がある。これは委任prefixとexcluded prefixのためのルートを作成する必要があるかもしれない。 Korhonen, et al. Standards Track [Page 7] RFC 6603 PD Exclude Option May 2012 6.2. Delegating Router The delegating router behavior regarding the use of the OPTION_PD_EXCLUDE option is more or less identical to the step described in Section 5.2. The only difference is the DHCPv6 messages used to carry the OPTION_PD_EXCLUDE option. OPTION_PD_EXCLUDE optionの使用に関する委任ルーターの動作は、Section 5.2にある。ただし、OPTION_PD_EXCLUDE optionを送受信するためのDHCPv6 messageのみが異なる。 The delegating router may mark any prefix(es) in the IA_PD Prefix options in a Release message from a requesting router as available , excluding the prefix included in the OPTION_PD_EXCLUDE options. If the Release message contains a new excluded prefix in any OPTION_PD_EXCLUDE option, the delegating router MUST send a Reply message with the Status Code set to NoBinding for that IA_PD option. 委任ルーターはOPTION_PD_EXCLUDE optionsに含まれるprefixを除く、要求ルーターからのRelease messageに含まれるIA_PD Prefix optionのprefixを利用可能としてマークする。Release messageがOPTION_PD_EXCLUDE optionに新しいexcluded prefixを含んでいる場合、委任ルーターはIA_PD optionoのStatus CodeにNoBindingを設定してReply messageを送信すること。 7. Security Considerations Security considerations for DHCPv6 are described in Section 23 of [RFC3315]. For DHCPv6 Prefix Delegation, they are described in Section 15 of [RFC3633]. In particular, RFC 3633 provides recommendations for protection against prefix delegation attacks. This specification does not add any new security considerations beyond those provided by RFC 3633. DHCPv6のSecurity considerationはRFC 3315のSection 23で説明される。DHCPv6 Prefix Delegationに関しては、RFC 3633のSection 15に記載される。具体的には、RFC 3633ではprefix delegation攻撃の保護に関する勧告を提供する。この仕様ではRFC 3633によって提供される以上の新しいsecurity considerationを追加しない。 8. IANA Considerations A new DHCPv6 Option Code has been reserved from the Dynamic Host Configuration Protocol for IPv6 (DHCPv6) registry for DHCP Option Codes. 新しいDHCPv6 Option CodeがDHCP Option Codesのレジストリに Dynamic Host Configuration Protocol for IPv6 (DHCPv6) から予約される。 OPTION_PD_EXCLUDE (67) 9. Acknowledgements The authors would like to thank Ralph Droms, Frank Brockners, Ted Lemon, Julien Laganier, Fredrik Garneij, Sri Gundavelli, Mikael Abrahamsson, Behcet Sarikaya, Jyrki Soini, Deng Hui, Stephen Jacob, Hemant Singh, Gaurav Halwasia, Lorenzo Colitti, and Tomasz Mrugalski for their valuable comments and discussions. Korhonen, et al. Standards Track [Page 8] RFC 6603 PD Exclude Option May 2012 10. References 10.1. Normative References [RFC2119] Bradner, S., Key words for use in RFCs to Indicate Requirement Levels , BCP 14, RFC 2119, March 1997. [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, Dynamic Host Configuration Protocol for IPv6 (DHCPv6) , RFC 3315, July 2003. [RFC3633] Troan, O. and R. Droms, IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6 , RFC 3633, December 2003. 10.2. Informative References [RFC4862] Thomson, S., Narten, T., and T. Jinmei, IPv6 Stateless Address Autoconfiguration , RFC 4862, September 2007. Korhonen, et al. Standards Track [Page 9] RFC 6603 PD Exclude Option May 2012 Authors Addresses Jouni Korhonen (editor) Nokia Siemens Networks Linnoitustie 6 FI-02600 Espoo Finland EMail jouni.nospam@gmail.com Teemu Savolainen Nokia Hermiankatu 12 D FI-33720 Tampere Finland EMail teemu.savolainen@nokia.com Suresh Krishnan Ericsson 8400 Decarie Blvd. Town of Mount Royal, QC Canada EMail suresh.krishnan@ericsson.com Ole Troan Cisco Systems, Inc Oslo Norway EMail ot@cisco.com Korhonen, et al. Standards Track [Page 10]
https://w.atwiki.jp/ddrdp/pages/834.html
CaptivAte~誓い~(踊) 曲名 アーティスト フォルダ 難易度 BPM NOTES/FA(SA) その他 CaptivAte~誓い~ DJ YOSHITAKA feat.A/I SN2 踊8 160 247 / 17 STREAM VOLTAGE AIR FREEZE CHAOS 49 46 29 31 5 楽譜面(5) / 踊譜面(8) / 激譜面(13) / 鬼譜面(-) 属性 渡り、局所難 譜面 http //eba502.web.fc2.com/fumen/ddr/sn2/captiv_c_8t.html 解説 一応全部交互に踏めるが、交互が難しい箇所が中盤の四分渡りと後半の八分に二箇所ある。無理しなくてもいいかも。 -- 名無しさん (2011-02-09 18 12 44) 寺ゴールドからの移植曲で、編曲カットされている。一部リズム難なのと、8分同時が局所的に難しい -- 名無しさん (2015-01-02 20 51 55) 名前 コメント コメント(私的なことや感想はこちら) 名前 コメント
https://w.atwiki.jp/0x0b/pages/45.html
Function オブジェクト 15.3.1 関数として呼出される Function コンストラクタ Function がコンストラクタとしてではなく関数として呼出される場合、それは新しい Function オブジェクトを作成し初期化する。したがって、関数呼び出し Function(…) は、同じ引数をとるオブジェクト生成式 new Function(…) と等価である。 15.3.1.1 Function (p1, p2, … , pn, body) Function 関数がある引数 p1, p2, …, pn, body (n が 0、つまり、"p" 引数がないかもしれず、 body も提供されないかもしれない) で呼出される場合、次のステップが取られる Function コンストラクタが同じ引数で呼出されたかのように(15.3.2.1)、新しい Function オブジェクトを作成して返す。 15.3.2 Function コンストラクタ Function が new 式の一部で呼出されるとき、それはコンストラクタである それは新たに生成されたオブジェクトを初期化する。 15.3.2.1 new Function (p1, p2, … , pn, body) 最後の引数は、関数の本文(実行可能なコード)を指定する; 先行する引数は仮引数を指定する。Function コンストラクタががある引数 p1, p2, …, pn, body (n が 0、つまり、"p" 引数がないかもしれず、 body も提供されないかもしれない) で呼出される場合、次のステップが取られる P を空文字列とする。 引数が与えられなければ、 body を空文字列として、ステップ 13 へ。 引数が 1 つ与えられたならば、body をその引数として、ステップ 13 へ。 Result(4) を最初の引数とする。 P を ToString(Result(4)) とする。 k を 2 とする。 k が引数の数と等しければ、 body を k 番目の引数として、ステップ 13 へ。 Result(8) を k 番目の引数とする。 ToString(Result(8)) を呼出す。 P を 前の P の値, 文字列 "," (カンマ), Result(9) を連結した結果とする。 k を 1 増加させる。 ステップ 7 へ。 ToString(body) を呼出す。 P が FormalParameterListopt として解析不能ならば、例外 SyntaxError を投げる。 body が FunctionBody として解析不能であれば、例外 SyntaxError を投げる。 FormalParameterListopt として P を解析したもの、 FunctionBody として body を解析したものをパラメータに渡し、13.2 に規定されるように、新規 Function オブジェクトを生成する。Scope パラメータとしてグローバルオブジェクトから構成されるスコープチェーン内を渡す。 Result(16) を返す。 prototype プロパティは、関数がコンストラクタとして使用される可能性に備え、すべての関数に自動的に作成される。 NOTE 指定される各仮引数のために 1 引数を持つのは許容されるが、必須ではない。 例えば、次の 3 つの表現はすべて同じ結果を生む new Function("a", "b", "c", "return a+b+c") new Function("a, b, c", "return a+b+c") new Function("a,b", "c", "return a+b+c") 15.3.3 Function コンストラクタのプロパティ Function コンストラクタの内部 Prototype プロパティは Function プロトタイプオブジェクト (15.3.4) である。 内部プロパティと length プロパティ (値は1) の他に、 Function コンストラクタは次のプロパティを持つ 15.3.3.1 Function.prototype Function.prototype の初期値は Function プロトタイプオブジェクト (15.3.4) である。 このプロパティは属性 { DontEnum, DontDelete, ReadOnly } である。 15.3.4 Function プロトタイプオブジェクトのプロパティ Function プロトタイプオブジェクトはそれ自体が Function オブジェクトであり (その Class が "Function" である)、起動された時、どんな引数も受け付け、undefined を返す。 Function プロトタイプオブジェクトの内部 Prototype プロパティの値は、Object プロトタイプオブジェクト(15.3.2.1) である。 それは "空の本文" をもつファンクションである; 呼び出されれば、単に undefined を返す。 Function プロトタイプオブジェクトは、自分自身の valueOf プロパティを持たない; だが、Object プロトタイプオブジェクトの valueOf プロパティを継承する。 15.3.4.1 Function.prototype.constructor Function.prototype.constructor の初期値は、組込み Function コンストラクタである。 15.3.4.2 Function.prototype.toString ( ) 関数の実装依存の表現が返される。この表現は FunctionDeclaration の構文を持つ。表現文字列内の空白、行終端子、セミコロンの使用及び配置は実装依存であることに特に注意。 toString 関数は汎用的ではない; その this 値が Function オブジェクトでなければ、例外 TypeError を投げる。それゆえ、メソッドとして他の種類のオブジェクトに転用できない。 15.3.4.3 Function.prototype.apply (thisArg, argArray) apply メソッドは 2 つの引数、 thisArg および argArray をとり、オブジェクトの Call プロパティを使用して、関数呼出しを実行する。オブジェクトが Call プロパティを持っていない場合、例外 TypeError が投げられる。 thisArg が null または undefined の場合、呼出された関数は this 値としてグローバルオブジェクトを渡される。そうでなければ、呼出された関数は this 値として ToObject(thisArg) を渡される。 argArray が null または undefined の場合、呼出された関数は引数を渡されない。そうでなければ、 argArray が配列でも arguments オブジェクト (10.1.8 参照) でもない場合、例外 TypeError が投げられる。 argArrayが 配列または arugments オブジェクトのいずれかである場合、関数は (ToUint32(argArray.length)) 個の引数argArray[0], argArray[1], ... argArray[ToUint32(argArray.length)-1] を渡される。 apply メソッドの length プロパティは 2 である。 15.3.4.4 Function.prototype.call (thisArg [ , arg1 [ , arg2, … ] ] ) call メソッドは 1 つ以上の引数を取り、thisArg および(選択的に) arg1, arg2, ... をとり、オブジェクトのCall プロパティを使用して、関数呼び出しを実行する。オブジェクトが Call プロパティを持っていない場合、TypeError 例外が投げられる。呼出された関数は、引数として arg1、arg2 などを渡される。 thisArg が null または undefined の場合、呼出された関数は this 値としてグローバルオブジェクトを渡される。そうでなければ、呼出された関数は this 値として ToObject(thisArg) を渡される。 call メソッドの length プロパティは 1 である。 15.3.5 Function インスタンスのプロパティ 必須の内部プロパティに加えて、各ファンクション実体は Call プロパティ、 Construct プロパティ、 Scope プロパティ (8.6.2 及び 13.2 を参照) を持つ。Class プロパティの値は "Function" である。 15.3.5.1 length length プロパティの値は通常、関数に期待される "典型的な" 引数の数を示す整数\である。だが、言語はそれ以外の数の引数\で関数が呼び出されることを許す。length プロパティによって指定される以外の数の引数\で呼び出された時の関数の振舞いは、関数に依存する。このプロパティは属性 { DontDelete, ReadOnly, DontEnum } である。 15.3.5.2 prototype prototype プロパティの値は、Function オブジェクトがコンストラクタとして呼出される前に、新しく作成されるオブジェクトの内部 prototype プロパティの初期化に使用される。このプロパティは属性 { DontDelete } である。 15.3.5.3 HasInstance (V) F を Function オブジェクトと仮定する。F の HasInstance メソッドが値 V で呼出されるとき、次のステップが取られる: V がオブジェクトでなければ、 false を返す。 F の Get メソッドを、プロパティ名 "prototype" で呼出す。 O を Result(2) とする。 O がオブジェクトでなければ、TypeError 例外を投げる。 V を V の Prototype プロパティの値とする。 V が null ならば、false を返す。 O と V が同じオブジェクトを参照している、あるいは 互いに連結されたオブジェクト(13.1.2)を参照していれば、true を返す。 ステップ 5 へ.
https://w.atwiki.jp/wiki12_0ch/pages/23.html
0ch BBS Script 関連リンク集 0ch 公式 0ch BBS Script 公式サイト http //0ch.mine.nu 質問配布掲示板:実験板@0ch掲示板 aaacafeテスト:実験@0ch掲示板 infoseekテスト:実験@0ch掲示板 サポート情報提供 ◆7M./4Uw.さん作成:ふぁっきゅー ◆2Z0PECm2さん作成:0ch初心者講座 ◆/dEnAiNoさん作成:ぜろちゃんねるスクリプト for @nifty 設置手順 ] ◆Jn4YADYgY.さん作成:ぜろちゃんねるWebRing, 掲示板 アシストスクリプト http //www.0ch.info/ http //img0ch.hikarin.aikotoba.jp/assist.html アシストスクリプト 0ch派生スクリプト ◆hikArinCL2さん作成:img0ch 0chスクリプトを国際化する試み:0ch for world2ch 0chスクリプトを携帯絵文字対応する試み:http //mirror.s151.xrea.com/emoji/ read.html対応版:http //1st.geocities.jp/deai5656/index.html read.html .htaccess不使用版(isweb等に):http //mirrorhenkan.hp.infoseek.co.jp/0ch_html/
https://w.atwiki.jp/visualstudio/pages/35.html
C#2.0で追加された主な機能です。 目次 ジェネリック 部分クラス 静的クラス 匿名メソッド プロパティ アクセサのアクセシビリティ イテレータ null 許容型 ジェネリック ジェネリックにより、特定の型に依存しない汎用的なクラス、構造体、メソッド、インターフェイス、デリゲートが作成可能 で型パラメータを宣言し、使用する側でも で型指定をする whereキーワードにて型パラメータを制限することが可能 ArrayListで必要であったキャストが不要 コレクションへの追加時ボックス化は行われないため高速 public class GenericSample { static void Main() { //int型のコレクションを生成 GenericList int intList = new GenericList int (); intList.Add(1); //double型のコレクションを作成 GenericList double dblList = new GenericList double (); dblList.Add(1.1); } } //特定の型に依存しない汎用的なクラス public class GenericList T { public void Add(T item) { } } 部分クラス 部分クラスにより、クラス、構造体、インターフェイスを複数のソースファイルに分割が可能 分割するにはpartial修飾子を使用する 複数のプログラマで同一クラスを同時に編集する場合や、プログラマに直接編集されたくない部分を分ける場合などに利用する WindowsアプリケーションのWindowsフォームでは、以下のように部分クラスが使用されている //プログラマが編集する部分クラス、ファイル名はForm1.cs public partial class Form1 Form { public Form1() { InitializeComponent(); } } //フォームデザイナが自動的に更新する部分クラス、ファイル名はForm1.Designer.cs partial class Form1 { /// summary /// 必要なデザイナ変数です。 /// /summary private System.ComponentModel.IContainer components = null; ……中略…… } 静的クラス System.Mathクラスのように、静的なメンバのみもつクラスを作成する場合に使用する 静的クラスを宣言するにはstatic修飾子をつける 外部から呼び出されることが前提となるため、アクセス修飾子はpublicのみ使用可 インスタンス化は出来ない インスタンスコンストラクタは含むことはできない。静的コンストラクタは含むことが可能 継承は出来ない クラスを含むプログラム、名前空間が読み込まれるとCLRにより自動的に読み込まれる "インスタンス名.メンバ"ではなく"クラス名.メンバ"と記述しメンバにアクセスする class StaticSample { static void Main(string[] args) { double maxValue = StaticMath.Max double (1.1, 1.2); } } //静的クラス static class StaticMath { //2つの変数を比較し最大値を返すメソッド public static T Max T (T a, T b) where T IComparable { if (a.CompareTo(b) 0) { return a; } else { return b; } } } 匿名メソッド 匿名メソッドは、デリゲートインスタンス生成時に埋め込む名前なしのブロックをさす delegateキーワードの後の{・・・}; にメソッドの内容を記述する 外部メソッドを再利用しない場合や、コードをシンプルにしたい場合に使用する delegate int D(int x, int y); class Program { static void Main(string[] args) { //匿名メソッド未使用時 //外部メソッドを用意し登録する必要があった D d1 = new D(Add); //匿名メソッド使用時 //{・・・}内に直接記述する D d2 = delegate(int x, int y) { return x + y; }; Console.WriteLine(d1(1, 2)); Console.WriteLine(d2(3, 4)); } static int Add(int x, int y) { return x + y; } } プロパティ アクセサのアクセシビリティ プロパティのgetアクセサ、setアクセサにアクセス修飾子の指定が可能となった get、setどちらかのみアクセス修飾子が設定可能 get、setのアクセスレベルはプロパティのアクセスレベルより制限されている必要がある 値の取得は他のクラスから可能とし、値の設定はクラス内からのみ行なわせたい場合などに使用する private string name; public string Name { get { return name; } private set { name = value; } } イテレータ 従来foreach文にて列挙可能なコレクションクラスを作成するには、IEnummerable、IEnumratorのインターフェース2つを実装する必要があり面倒だったが、イテレータにより容易に作成が可能となった IEnumeratorを戻り値とするGetEnumeratorメソッドを追加し、yield returnにて返す値を指定する yield breakにて強制的に列挙を終わりにすることも可能 class Program { static void Main(string[] args) { Enum1 enum1 = new Enum1(); foreach (string dayOfWeek in enum1) { Console.WriteLine(dayOfWeek); } Enum2 enum2 = new Enum2(); foreach (string dayOfWeek in enum2) { Console.WriteLine(dayOfWeek); } } } //C#1.0 Enummerable、IEnumratorのインターフェース2つを実装する必要がある public class Enum1 IEnumerable { public IEnumerator GetEnumerator() { return new Enumrator1(this); } public string[] dayOfWeeks = { "Monday ", "Tuesday ", "Wednesday ", "Thursday ", "Friday ", "Saturday ", "Sunday " }; } public class Enumrator1 IEnumerator { Enum1 m_enum1; int m_position; public Enumrator1(Enum1 enum1) { m_enum1 = enum1; Reset(); } public object Current { get { return m_enum1.dayOfWeeks[m_position]; } } public bool MoveNext() { if (m_position = m_enum1.dayOfWeeks.Length - 1) { return false; } m_position++; return true; } public void Reset() { m_position = -1; } } //C#2.0 IEnumeratorを戻り値とするGetEnumeratorメソッドを用意するのみでよい public class Enum2 { public string[] dayOfWeeks = { "Monday ", "Tuesday ", "Wednesday ", "Thursday ", "Friday ", "Saturday ", "Sunday " }; public IEnumerator string GetEnumerator() { foreach (string dayOfWeek in dayOfWeeks) { yield return dayOfWeek; } } } null 許容型 従来、値型にはnull値を代入は出来ず、データがない状態を表す場合 -1 などで表す必要があったnull許容型を使用すると、null の値を割り当てることができる値型の変数を作成できる 構文 T? にてnull許容型を作成する(System.Nullable T の省略表現) HasValueプロパティにて値があるか判定可能 Valueプロパティにて値を取得可能 GetValueOrDefaultメソッドにて、null許容型の値がnullの場合に値型のデフォルト値が取得可能 ?? 演算子を使用すると、null許容型の値がnullの場合にデフォルト値が指定可能 static void Main(string[] args) { int? x = null; if (x.HasValue) { Console.WriteLine(x.Value); } else { Console.WriteLine("xはnullです"); } Console.WriteLine(x.GetValueOrDefault()); int y = x ?? 0; } 参考 C# 2.0 言語およびコンパイラの新機能 http //msdn.microsoft.com/ja-jp/library/7cz8t42e(VS.80).aspx
https://w.atwiki.jp/fieds_labo4/pages/22.html
基本 プログラマのためのFlash遊び方 ActionScript3でFlashの人は7回目まででOKかな? アニメーションの説明で Tweener が出てきます。 8回目はWEBアプリの話。 9回目はAIRの話。 Flash Develop の場合、8回目、9回目はどうやればいんでしょ? Flash Develop にフォーム作る機能とかついてないのか? バッジを4っつ並べてみた package { import flash.display.Sprite; import flash.events.Event; import flash.geom.Matrix; import flash.geom.Point; import flash.filters.DropShadowFilter; import flash.text.TextField; /** * ... * @author ss */ public class Main extends Sprite { // instance private var LINE_COLOR uint = 0xffffff; private var BODY_COLOR1 uint = 0xffff66; private var BODY_COLOR2 uint = 0xffcc00; private var CORNER int = 12; private var RADIUS1 Number = 26; private var RADIUS2 Number = 22; private var TEXT String = "BETA"; public function Main() void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); init_01(); Web2Badge(100,100); init_02(); Web2Badge(100,200); init_03(); Web2Badge2(100,300); init_04(); Web2Badge2(100,400); } private function init(e Event = null) void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point } private function init_01() void { LINE_COLOR = 0xffffff; BODY_COLOR1 = 0xffff66; BODY_COLOR2 = 0xffcc00; CORNER = 12; RADIUS1 = 26; RADIUS2 = 22; TEXT = "BETA"; } private function init_02() void { LINE_COLOR = 0x7FCE3D; BODY_COLOR1 = 0xCDEEB7; BODY_COLOR2 = 0x74CA31; CORNER = 8; RADIUS1 = 26; RADIUS2 = 18; TEXT = "SALE"; } private function init_03() void { LINE_COLOR = 0xAEAFB1; BODY_COLOR1 = 0xAEAFB1; BODY_COLOR2 = 0x2B2B2B; CORNER = 10; RADIUS1 = 20; RADIUS2 = 26; TEXT = "BETA"; } private function init_04() void { LINE_COLOR = 0xffffff; BODY_COLOR1 = 0xFFDAED; BODY_COLOR2 = 0xFD037F; CORNER = 16; RADIUS1 = 26; RADIUS2 = 18; TEXT = "SALE"; } public function Web2Badge(pox int, poy int) void { // badge little var d Number = Math.min(RADIUS1, RADIUS2) * 2; // make Sprite var s Sprite = new Sprite(); s.graphics.lineStyle(1, LINE_COLOR); // gradation renge // (d×d renge -45°direction) var matrix Matrix = new Matrix(); matrix.createGradientBox(d, d, -Math.PI / 4); // gradation setting s.graphics.beginGradientFill( "linear", // style [BODY_COLOR1, BODY_COLOR2], // color [1, 1], // alpher [0, 255], // color position matrix); // renge and direction // star shape var angle Number = 2 * Math.PI / CORNER; var p1 Point, p2 Point; s.graphics.moveTo(RADIUS1, 0); for(var i int = 0; i CORNER; i++) { p1 = Point.polar(RADIUS2, angle * (i + 0.5)); p2 = Point.polar(RADIUS1, angle * (i + 1)); s.graphics.lineTo(p1.x, p1.y); s.graphics.lineTo(p2.x, p2.y); } s.graphics.endFill(); // add shadow s.filters = [new DropShadowFilter(4, 45, 0, 0.5)]; // text var size int = d / TEXT.length; var text TextField = new TextField(); text.htmlText = font size=" + size + " color="#ffffff" + b + TEXT + /font /b ; text.x = -text.textWidth / 2; text.y = -text.textHeight / 2; text.filters = [new DropShadowFilter(1, 45, 0, 0.8)]; s.addChild(text); // (100, 100) view //s.x = s.y = 100; s.x = pox; s.y = poy; addChild(s); } public function Web2Badge2(pox int, poy int) void { // badge little var d Number = Math.min(RADIUS1, RADIUS2) * 2; // make Sprite var s Sprite = new Sprite(); s.graphics.lineStyle(1, LINE_COLOR); // gradation renge // (d×d renge -45°direction) var matrix Matrix = new Matrix(); matrix.createGradientBox(d, d, -Math.PI / 4); // gradation setting s.graphics.beginGradientFill( "linear", // style [BODY_COLOR1, BODY_COLOR2], // color [1, 1], // alpher [0, 255], // color position matrix); // renge and direction // star shape var angle Number = 2 * Math.PI / CORNER; var p1 Point, p2 Point; s.graphics.moveTo(RADIUS1, 0); for(var i int = 0; i CORNER; i++) { p1 = Point.polar(RADIUS2, angle * (i + 0.5)); p2 = Point.polar(RADIUS1, angle * (i + 1)); s.graphics.curveTo(p1.x, p1.y, p2.x, p2.y); } s.graphics.endFill(); // add shadow s.filters = [new DropShadowFilter(4, 45, 0, 0.5)]; // text var size int = d / TEXT.length; var text TextField = new TextField(); text.htmlText = font size=" + size + " color="#ffffff" + b + TEXT + /font /b ; text.x = -text.textWidth / 2; text.y = -text.textHeight / 2; text.filters = [new DropShadowFilter(1, 45, 0, 0.8)]; s.addChild(text); // (100, 100) view //s.x = s.y = 100; s.x = pox; s.y = poy; addChild(s); } } } 4回目のイベントの伝播が大事っぽい。 イベントをとめる(伝播停止、親に渡さない) event.stopPropagation(); ターゲットを判定して、処理する if(event.target != stage) { return; } イベント段階を判定して、処理する。 if(event.eventPhase != EventPhase.AT_TARGET) { return; } 6回目のTweenerではまると思うので、ライブラリ を参照のこと。 package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import caurina.transitions.Tweener; import caurina.transitions.properties.FilterShortcuts; /** * ... * @author ss */ public class Main extends Sprite { public function Main() void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); FilterShortcuts.init(); Anime2(); } private function init(e Event = null) void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point } public function Anime2() void{ // click evnet check stage.addEventListener("click", clickHandler); } private function clickHandler(event MouseEvent) void { // make circle var s Sprite = new Sprite(); s.graphics.beginFill(Math.random() * 0x1000000); s.graphics.drawCircle(0, 0, 10); s.graphics.endFill(); addChild(s); // moveto circle onClick s.x = event.stageX; s.y = event.stageY; s.scaleX = s.scaleY = 0; //Tweener.addTween(s, {time 1, scaleX 5, scaleY 5, x 0}); //var param Object = new Object(); //param.time = 1; //param.scaleX = 5; //param.scaleY = 5; //param.x = 0; //Tweener.addTween(s, param); Tweener.addTween(s, { time 1, // 1sec animation scaleX 5, // scaleX moveto 5 scaleY 5, // scaleY moveto 5 //x 0 transition "easeOutBounce" //onComplete function() void { //removeChild(s); //} }); Tweener.addTween(s, { time 0.5, delay 1, alpha 0, _Blur_blurX 30, _Blur_blurY 30, //_blur_blurX 30, //_blur_blurY 30, onComplete function() void { removeChild(s); } }); } } }
https://w.atwiki.jp/marumado/
@wikiへようこそ ウィキはみんなで気軽にホームページ編集できるツールです。 このページは自由に編集することができます。 メールで送られてきたパスワードを用いてログインすることで、各種変更(サイト名、トップページ、メンバー管理、サイドページ、デザイン、ページ管理、等)することができます まずはこちらをご覧ください。 @wikiの基本操作 用途別のオススメ機能紹介 @wikiの設定/管理 分からないことは? @wiki ご利用ガイド よくある質問 無料で会員登録できるSNS内の@wiki助け合いコミュニティ @wiki更新情報 @wikiへのお問合せフォーム 等をご活用ください @wiki助け合いコミュニティの掲示板スレッド一覧 #atfb_bbs_list その他お勧めサービスについて 大容量1G、PHP/CGI、MySQL、FTPが使える無料ホームページは@PAGES 無料ブログ作成は@WORDをご利用ください 2ch型の無料掲示板は@chsをご利用ください フォーラム型の無料掲示板は@bbをご利用ください お絵かき掲示板は@paintをご利用ください その他の無料掲示板は@bbsをご利用ください 無料ソーシャルプロフィールサービス @flabo(アットフラボ) おすすめ機能 気になるニュースをチェック 関連するブログ一覧を表示 その他にもいろいろな機能満載!! @wikiプラグイン @wiki便利ツール @wiki構文 @wikiプラグイン一覧 まとめサイト作成支援ツール バグ・不具合を見つけたら? 要望がある場合は? お手数ですが、メールでお問い合わせください。